﻿namespace UnityEditorInternal
{
    using System;
    using System.Runtime.CompilerServices;
    using UnityEngine;

    public sealed class BlendTree : Motion
    {
        public BlendTree()
        {
            Internal_Create(this);
        }

        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern int AddMotion(Motion motion);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        internal extern float EvaluateChildWeight(int index, float value);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern AnimationClip[] GetAnimationClipsFlattened();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern string GetBlendEvent();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern int GetChildCount();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern float GetChildTimeScale(int index);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern float GetChildTreshold(int index);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        internal extern float GetInputBlendValue(string blendValueName);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern float GetMaxThreshold();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern float GetMinThreshold();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern Motion GetMotion(int index);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern string GetName();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern string GetRecursiveBlendEvent(int index);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern int GetRecursiveBlendEventCount();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern float GetRecursiveBlendEventMax(int index);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern float GetRecursiveBlendEventMin(int index);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern bool GetUseAutomaticThresholds();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        private static extern void Internal_Create(BlendTree mono);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void RemoveAtIndex(int index);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SetBlendEvent(string blendValue);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SetChildTimeScale(int index, float val);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SetChildTreshold(int index, float val);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        internal extern void SetInputBlendValue(string blendValueName, float value);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SetMaxThreshold(float max);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SetMinThreshold(float min);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SetMotion(int index, Motion motion);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SetUseAutomaticThresholds(bool val);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SortChildren();
    }
}

